home *** CD-ROM | disk | FTP | other *** search
/ PC Home 138 / PC Home issue 138.iso / Software / Essentials / Netscape / nim.xpi / bin / chrome / aim.jar / content / aim / mini.js < prev    next >
Encoding:
Text File  |  2002-07-17  |  4.1 KB  |  172 lines

  1. const nsIWebNavigation = Components.interfaces.nsIWebNavigation;
  2.  
  3. var gURLBar = null;
  4. var gBrowser = null;
  5. var gSession = null;
  6.  
  7. function nsBrowserStatusHandler()
  8. {
  9.   this.init();
  10. }
  11.  
  12. nsBrowserStatusHandler.prototype = 
  13. {
  14.   QueryInterface : function(aIID)
  15.   {
  16.     if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
  17.         aIID.equals(Components.interfaces.nsISupportsWeakReference))
  18.       return this;
  19.     throw Components.results.NS_NOINTERFACE;
  20.   },
  21.  
  22.   init : function()
  23.   {
  24.   },
  25.  
  26.   destroy : function()
  27.   {
  28.   },
  29.  
  30.   onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus)
  31.   {
  32.   },
  33.  
  34.   onProgressChange : function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
  35.   {
  36.   },
  37.  
  38.   onLocationChange : function(aWebProgress, aRequest, aLocation)
  39.   {
  40.     UpdateBackForwardButtons();
  41.   },
  42.  
  43.   onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
  44.   {
  45.   },
  46.  
  47.   onSecurityChange : function(aWebProgress, aRequest, aState)
  48.   {
  49.   }
  50. }
  51.  
  52. var gBrowserStatusHandler;
  53. function MiniNavStartup()
  54. {
  55.   var webNavigation = getWebNavigation();
  56.     gBrowser = document.getElementById("content");
  57.     gBrowserStatusHandler = new nsBrowserStatusHandler();
  58.  
  59.   try {
  60.     getBrowser().sessionHistory;
  61.   } catch(e) {
  62.     webNavigation.sessionHistory = Components.classes["@mozilla.org/browser/shistory;1"]
  63.                                              .createInstance(Components.interfaces.nsISHistory);
  64.   }
  65.  
  66.     var interfaceRequestor = getBrowser().docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor);
  67.     var webProgress = interfaceRequestor.getInterface(Components.interfaces.nsIWebProgress);
  68.  
  69.   gSession = webNavigation;
  70.  
  71.  
  72.     webProgress.addProgressListener(gBrowserStatusHandler,
  73.                                     Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);
  74. }
  75.  
  76.  function createBackMenu(event)
  77.  {
  78.    return FillHistoryMenu(event.target, "back");
  79.  }
  80.  
  81.  function createForwardMenu(event)
  82.  {
  83.    return FillHistoryMenu(event.target, "forward");
  84.  }
  85.  
  86.  function gotoHistoryIndex(aEvent)
  87.  {
  88.    var index = aEvent.target.getAttribute("index");
  89.    if (!index)
  90.      return false;
  91.    try {
  92.      getWebNavigation().gotoIndex(index);
  93.    }
  94.    catch(ex) {
  95.      return false;
  96.    }
  97.    return true;
  98.  }
  99.  
  100. function MiniNavShutdown()
  101. {
  102.   dump("*** MiniNavShutdown\n");
  103.   if (gBrowserStatusHandler)
  104.     gBrowserStatusHandler.destroy();
  105. }
  106.  
  107. function getBrowser()
  108. {
  109.   if (!gBrowser)
  110.     gBrowser = document.getElementById("content");
  111.   return gBrowser;
  112. }
  113.  
  114. function getWebNavigation()
  115. {
  116.   if (!gSession) {
  117.     gSession = getBrowser().webNavigation;
  118.   }
  119.   return gSession;
  120. }
  121.  
  122. function UpdateBackForwardButtons()
  123. {
  124.   var backBroadcaster = document.getElementById("canGoBack");
  125.   var forwardBroadcaster = document.getElementById("canGoForward");
  126.   var webNavigation = getWebNavigation();
  127.  
  128.   // Avoid setting attributes on broadcasters if the value hasn't changed!
  129.   // Remember, guys, setting attributes on elements is expensive!  They
  130.   // get inherited into anonymous content, broadcast to other widgets, etc.!
  131.   // Don't do it if the value hasn't changed! - dwh
  132.  
  133.   var backDisabled = (backBroadcaster.getAttribute("disabled") == "true");
  134.   var forwardDisabled = (forwardBroadcaster.getAttribute("disabled") == "true");
  135.  
  136.   if (backDisabled == webNavigation.canGoBack) {
  137.     if (backDisabled)
  138.        backBroadcaster.removeAttribute("disabled");
  139.     else
  140.        backBroadcaster.setAttribute("disabled", true);
  141.   }
  142.    
  143.   if (forwardDisabled == webNavigation.canGoForward) {
  144.     if (forwardDisabled)
  145.        forwardBroadcaster.removeAttribute("disabled");
  146.     else
  147.        forwardBroadcaster.setAttribute("disabled", true);
  148.   }
  149. }
  150.  
  151. function BrowserBack()
  152. {
  153.   getWebNavigation().goBack();
  154.   UpdateBackForwardButtons();
  155. }
  156.  
  157. function BrowserForward()
  158. {
  159.   getWebNavigation().goForward();
  160.   UpdateBackForwardButtons();
  161. }
  162.  
  163. function BrowserStop()
  164. {
  165.   getWebNavigation().stop(nsIWebNavigation.STOP_ALL);
  166. }
  167.  
  168. function BrowserReload()
  169. {
  170.   getWebNavigation().reload(nsIWebNavigation.LOAD_FLAGS_NONE);
  171. }
  172.